const fetch = require('node-fetch')

async function testResetPassword () {
  console.log('🧪 开始测试重置密码功能...\n')

  try {
    // 1. 首先获取用户列表，找到一个可以测试的用户
    console.log('📋 获取用户列表...')
    const usersResponse = await fetch('http://localhost:3000/api/users?limit=1')

    if (!usersResponse.ok) {
      throw new Error(`获取用户列表失败: ${usersResponse.status}`)
    }

    const usersData = await usersResponse.json()
    console.log('✅ 用户列表获取成功')

    if (!usersData.success || !usersData.data.users.length) {
      throw new Error('没有找到可测试的用户')
    }

    const testUser = usersData.data.users[0]
    console.log(`📍 测试用户: ID=${testUser.id}, 邮箱=${testUser.email}\n`)

    // 2. 测试重置密码API
    console.log('🔐 测试重置密码...')
    const newPassword = 'test123456'

    const resetResponse = await fetch(
      `http://localhost:3000/api/users/${testUser.id}`,
      {
        method: 'PUT',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          password: newPassword
        })
      }
    )

    console.log(`响应状态: ${resetResponse.status}`)
    const resetResult = await resetResponse.json()
    console.log('响应内容:', JSON.stringify(resetResult, null, 2))

    if (!resetResponse.ok) {
      throw new Error(
        `重置密码失败: ${resetResult.message || resetResult.error}`
      )
    }

    console.log('✅ 密码重置成功！\n')

    // 3. 验证密码是否真的被更新了
    console.log('🔍 验证密码更新...')
    const verifyResponse = await fetch(
      `http://localhost:3000/api/users/${testUser.id}`
    )

    if (verifyResponse.ok) {
      const userData = await verifyResponse.json()
      console.log('✅ 用户信息获取成功，密码应该已更新')
    } else {
      console.log('⚠️  无法验证用户信息')
    }

    console.log('\n🎉 重置密码功能测试完成！')
  } catch (error) {
    console.error('❌ 测试失败:', error.message)
    console.error('详细错误:', error)
  }
}

// 运行测试
testResetPassword()
